/**
 * 配置管理器 - 处理设置和配置的加载、保存
 */

// 默认配置
const DEFAULT_CONFIG = {
    apiKey: '',
    baseUrl: 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions',
    model: 'qwen'
};

// 当前配置
let currentConfig = {...DEFAULT_CONFIG};

// 事件监听器
const eventListeners = {
    'configChanged': []
};

/**
 * 初始化配置
 */
function initConfig() {
    try {
        const savedConfig = localStorage.getItem('aiConfig');
        if (savedConfig) {
            const parsedConfig = JSON.parse(savedConfig);
            currentConfig = {...DEFAULT_CONFIG, ...parsedConfig};
            console.log('配置已从本地存储加载');
        } else {
            console.log('未找到保存的配置，使用默认配置');
        }
    } catch (error) {
        console.error('加载配置时出错:', error);
        currentConfig = {...DEFAULT_CONFIG};
    }
    
    // 触发配置更改事件
    triggerEvent('configChanged', currentConfig);
    
    return currentConfig;
}

/**
 * 获取当前配置
 */
function getConfig() {
    return {...currentConfig};
}

/**
 * 保存配置
 */
function saveConfig(config) {
    try {
        currentConfig = {...currentConfig, ...config};
        localStorage.setItem('aiConfig', JSON.stringify(currentConfig));
        console.log('配置已保存到本地存储');
        
        // 触发配置更改事件
        triggerEvent('configChanged', currentConfig);
        
        return true;
    } catch (error) {
        console.error('保存配置时出错:', error);
        return false;
    }
}

/**
 * 重置配置为默认值
 */
function resetConfig() {
    currentConfig = {...DEFAULT_CONFIG};
    localStorage.removeItem('aiConfig');
    console.log('配置已重置为默认值');
    
    // 触发配置更改事件
    triggerEvent('configChanged', currentConfig);
    
    return currentConfig;
}

/**
 * 添加事件监听器
 */
function addEventListener(event, callback) {
    if (!eventListeners[event]) {
        eventListeners[event] = [];
    }
    eventListeners[event].push(callback);
}

/**
 * 移除事件监听器
 */
function removeEventListener(event, callback) {
    if (!eventListeners[event]) return;
    
    const index = eventListeners[event].indexOf(callback);
    if (index !== -1) {
        eventListeners[event].splice(index, 1);
    }
}

/**
 * 触发事件
 */
function triggerEvent(event, data) {
    if (!eventListeners[event]) return;
    
    eventListeners[event].forEach(callback => {
        try {
            callback(data);
        } catch (error) {
            console.error(`执行事件${event}的监听器时出错:`, error);
        }
    });
}

// 暴露公共接口
window.ConfigManager = {
    initConfig,
    getConfig,
    saveConfig,
    resetConfig,
    addEventListener,
    removeEventListener
}; 